﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.ComponentModel.DataAnnotations;

namespace PuroGame.Models
{
    public class Usuario
    {
        [Key]
        public int? Idf_Usuario { get; set; }
        
        public string Nme_Usuario { get; set; }
        public string Des_Email { get; set; }
        public bool Flg_Ativo { get; set; }
        public int Num_Dias_Suspensao { get; set; }
        public string Des_Senha { get; set; }
        public DateTime Dta_Cadastro { get; set; }
        public string Num_Ultimo_IP { get; set; }
        public string Des_Apelido { get; set; }

        public static List<Usuario> List()
        {
            List<Usuario> ls = new List<Usuario>();

            using (SqlConnection oConn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["PuroGameEntities"].ToString()))
            {
                oConn.Open();
                using (SqlCommand oComm = new SqlCommand())
                {
                    oComm.CommandText = "SELECT * FROM Usuario";
                    oComm.Connection = oConn;
                    using (IDataReader iDr = oComm.ExecuteReader())
                    {
                        while (iDr.Read())
                        {
                            Usuario objUsuario = new Usuario();
                            objUsuario.Nme_Usuario = iDr["Nme_Usuario"].ToString();
                            ls.Add(objUsuario);
                        }
                    }
                }
            }
            return ls;
        }

        public void Save()
        {
            List<SqlParameter> param = new List<SqlParameter>();
            param.Add(new SqlParameter("@Idf_Usuario", SqlDbType.Int));
            param.Add(new SqlParameter("@Dta_Nascimento", SqlDbType.DateTime));
            param.Add(new SqlParameter("@Des_Endereco", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Des_Email", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Num_Telefone", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Num_Celular", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Flg_Ativo", SqlDbType.Bit));
            param.Add(new SqlParameter("@Num_Dias_Suspenso", SqlDbType.Int));
            param.Add(new SqlParameter("@Des_Chave", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Dta_Cadastro", SqlDbType.DateTime));
            param.Add(new SqlParameter("@Dta_Alteracao", SqlDbType.DateTime));
            param.Add(new SqlParameter("@Num_Ultimo_IP", SqlDbType.VarChar));
            param.Add(new SqlParameter("@Des_Apelido", SqlDbType.VarChar));
        }

        public static Usuario Load(int pIdfUsuario)
        {
            List<SqlParameter> param = new List<SqlParameter>();
            param.Add(new SqlParameter("@Idf_Usuario", SqlDbType.Int));
            param[0].Value = pIdfUsuario;

            string sQuery = "SELECT * FROM Usuario WHERE Idf_Usuario = @Idf_Usuario";

            Usuario objUsuario = null;

            using (IDataReader iDr = DataAccessLayer.ExecuteReader(CommandType.Text, sQuery, param))
            {
                if (iDr.Read())
                {
                    objUsuario = new Usuario();
                    objUsuario.Idf_Usuario = pIdfUsuario;
                    objUsuario.Nme_Usuario = iDr["Nme_Usuario"].ToString();
                }
            }

            return objUsuario;
        }
    }
}